# Makefile.sbo: sane Makefile for levmar on Slackware
# dbs 2017-03-15

# Get these from Makefile.so
MAJ=2
MIN=2

ODIR=build

CONFIGFLAGS=-ULINSOLVERS_RETAIN_MEMORY
BUILDFLAGS=-funroll-loops -Wall $(CONFIGFLAGS) $(CFLAGS)

LIBOBJS=$(ODIR)/lm.o $(ODIR)/Axb.o $(ODIR)/misc.o $(ODIR)/lmlec.o $(ODIR)/lmbc.o $(ODIR)/lmblec.o $(ODIR)/lmbleic.o
LIBSRCS=lm.c Axb.c misc.c lmlec.c lmbc.c lmblec.c lmbleic.c

LAPACKLIBS=-llapack -lblas
LIBS=$(LAPACKLIBS) -lm

$(ODIR)/liblevmar.so.$(MAJ).$(MIN): $(LIBOBJS)
	$(CC) -shared -Wl,-soname,liblevmar.so.$(MAJ) -o $(ODIR)/liblevmar.so.$(MAJ).$(MIN) $(LIBS) $(LIBOBJS)

$(ODIR)/%.o : %.c
	$(CC) $(BUILDFLAGS) -c $< -o $@

$(ODIR)/lm.o: lm.c lm_core.c levmar.h misc.h compiler.h
$(ODIR)/Axb.o: Axb.c Axb_core.c levmar.h misc.h
$(ODIR)/misc.o: misc.c misc_core.c levmar.h misc.h
$(ODIR)/lmlec.o: lmlec.c lmlec_core.c levmar.h misc.h
$(ODIR)/lmbc.o: lmbc.c lmbc_core.c levmar.h misc.h compiler.h
$(ODIR)/lmblec.o: lmblec.c lmblec_core.c levmar.h misc.h
$(ODIR)/lmbleic.o: lmbleic.c lmbleic_core.c levmar.h misc.h

clean:
	@rm -f $(LIBOBJS)

cleanall: clean
	@rm -f $(ODIR)/liblevmar.so.$(MAJ).$(MIN)

depend:
	makedepend -f Makefile $(LIBSRCS)

install: $(ODIR)/liblevmar.so.$(MAJ).$(MIN)
	install -Dpm 644 levmar.h $(DESTDIR)/usr/include/levmar/levmar.h
	install -s -Dpm 755 build/liblevmar.so.$(MAJ).$(MIN) $(DESTDIR)/usr/lib$(LIB_SUFFIX)/liblevmar.so.$(MAJ).$(MIN)
	ln -rs $(DESTDIR)/usr/lib$(LIB_SUFFIX)/liblevmar.so.$(MAJ).$(MIN) $(DESTDIR)/usr/lib$(LIB_SUFFIX)/liblevmar.so.$(MAJ)
	ln -rs $(DESTDIR)/usr/lib$(LIB_SUFFIX)/liblevmar.so.$(MAJ).$(MIN) $(DESTDIR)/usr/lib$(LIB_SUFFIX)/liblevmar.so
